class A{
    constructor(count){
        this.count = count;
    }
    valueOf(){
        return 2;
    }

    toString(){
        return 'hello';
    }

    [Symbol.toPrimitive](hint){
        if(hint=="number"){
            return 10;
        }
        if(hint=="string"){
            return 'Hello Libai';
        }
        //a + '22' 居然命中default
        //+a 依然命中 number 模式
        return true;
    }
}

//题目: a===1&&a===2&&a===3
//思路：Object.defineProperty getter来实现
//题目: a==1&&a==2&&a==3
//思路：== 会触发 valueOf，每次触发一次自动加1即可
class Num{
    constructor(value){
        this.value = value
    }

    valueOf(){
        return (this.value++);
    }
}

var n = new Num(1);
console.log(n==1);
console.log(n==2);
console.log(n==3);

var a = new A();